home *** CD-ROM | disk | FTP | other *** search
- /****************************************************************************************
- SnoozeAlarm.cp
-
- Copyright © 2000 Red Shed Software. All rights reserved.
- by Jonathan 'Wolf' Rentzsch (jon@redshed.net)
-
- Commenter Date Comment
- --------- ----------------- -----------------------------------------------------
- wolf Mon, Mar 6, 2000 Created.
-
- ************************************************************************************/
-
- #include "SnoozeAlarm.h"
- #include "require.h"
- #include "QuitMessages.h"
- #include "Flour.h"
- #include "BetterBitStream.h"
-
- using namespace Flour;
-
- /**************************
- *
- * Classes
- *
- **************************/
- #pragma mark (Classes)
-
- class MyApp : public Application {
- public:
- virtual
- void
- Initialize();
-
- virtual
- void
- HandleMenuSelection(
- Event &event );
-
- /* virtual
- void
- HandleKeyDown(
- Event &event );*/
- };
-
- MyApp gMyApp;
- Application *gApp = &gMyApp;
-
- void
- MyEventTask(
- EventTask *task );
-
- /****************************************************************************************
- *
- * Functions
- *
- ****************************************************************************************/
- #pragma mark -
- #pragma mark (Functions)
-
- /****************************************************************************************
- Commenter Date Comment
- --------- ----------------- -----------------------------------------------------
- wolf Mon, Mar 6, 2000 Created.
-
- ************************************************************************************/
-
- void
- MyApp::Initialize()
- {
- Application::Initialize();
-
- EventTask *et = (EventTask*) NewPtr( sizeof( EventTask ) );
- if( et ) {
- InitializeEventTask( et );
- et->proc = MyEventTask;
- Boolean scheduled = ScheduleEventTask( et, kEventLoop );
- Require( scheduled );
- }
- }
-
- /****************************************************************************************
- Commenter Date Comment
- --------- ----------------- -----------------------------------------------------
- wolf Mon, Mar 6, 2000 Created.
-
- ************************************************************************************/
-
- void
- MyApp::HandleMenuSelection(
- Event &event )
- {
- switch( event.GetMenu() ) {
- case kAppleMenu:
- switch( event.GetMenuItem() ) {
- case kAboutItem:
- Debugger();
- break;
- default:
- HandleAppleMenuSelection( event );
- }
- break;
- case kFileMenu:
- switch( event.GetMenuItem() ) {
- case kQuitItem:
- BeginQuitting();
- break;
- default:
- RequireSwitch( event.GetMenuItem() );
- }
- break;
- // The frontmost window should have handled all Edit menu events.
- //case kEditMenu:
- // break;
- default:
- RequireSwitch( event.GetMenu() );
- }
- }
-
- /****************************************************************************************
- Commenter Date Comment
- --------- ----------------- -----------------------------------------------------
- wolf Thu, Jun 22, 2000 Created.
-
- ***********************************************************************************
-
- void
- MyApp::HandleKeyDown(
- Event &event )
- {
- Application::HandleKeyDown( event );
- }*/
-
- /****************************************************************************************
- Commenter Date Comment
- --------- ----------------- -----------------------------------------------------
- wolf Thu, Jun 22, 2000 Created.
-
- ************************************************************************************/
-
- void
- MyEventTask(
- EventTask *task )
- {
- const UInt32 kKeyMapSize = sizeof( KeyMap ) * 8;
-
- KeyMap keys;
- void *bitStream = keys;
- UInt32 bitPosition = 0, keyCount = 0;
-
- GetKeys( keys );
-
- while( bitPosition < kKeyMapSize ) {
- if( GetBetterBitStream( &bitStream, &bitPosition ) )
- ++keyCount;
- }
-
- if( keyCount > 2 ) {
- SndListHandle snd1 = (SndListHandle) Get1Resource( 'snd ', 128 );
- SndListHandle snd2 = (SndListHandle) Get1Resource( 'snd ', 129 );
- SndListHandle snd3 = (SndListHandle) Get1Resource( 'snd ', 130 );
-
- if( snd1 && snd2 && snd3 ) {
- SndChannelPtr chan = nil;
- OSErr err = SndNewChannel( &chan, sampledSynth, 0, nil );
- if( !err ) {
- err = SndPlay( chan, snd1, false );
- err = SndPlay( chan, snd2, false );
- err = SndPlay( chan, snd3, false );
- }
- if( chan )
- err = SndDisposeChannel( chan, false );
- }
- if( snd1 )
- ReleaseResource( (Handle) snd1 );
- if( snd2 )
- ReleaseResource( (Handle) snd2 );
- if( snd3 )
- ReleaseResource( (Handle) snd3 );
- }
-
- /*Str255 n;
- NumToString( keyCount, n );
- SetMenuItemText( GetMenuHandle( kEditMenu ), 1, n );*/
-
- Boolean scheduled = ScheduleEventTask( task, 30 );
- Require( scheduled );
- }